/*** 
 * @Author: GXY
 * @Date: 2022-07-21 16:48:33
 * @LastEditTime: 2022-07-26 14:16:34
 * @LastEditors: GXY
 * @Description: 
 * @FilePath: \LinearList\array\my_array.h
 * @可以输入预定的版权声明、个性签名、空行等
 */
/*
 * @Author: GXY
 * @Date: 2022-07-21 16:48:33
 * @LastEditTime: 2022-07-21 17:38:18
 * @FilePath: \LinearList\array\my_array.h
 * @Description: 
 * 
 */
#ifndef _ARRAY_MY_ARRAY_H_
#define _ARRAY_MY_ARRAY_H_

typedef int ArrDataType; // 首先确定动态数组数据类型
#define ARR_INC_NUM 5  // 数组空间溢出后开辟多大空间

typedef struct my_array
{
    ArrDataType* head; // 数组元素首地址
    int length;
    int size;
    /* data */
}my_array; //自定义顺序表结构


unsigned int array_initArray(my_array* head, int size); // 初始化数组，开辟空间
void array_destroyArray(my_array* arr); // 删除数组开辟空间
void array_clearList(my_array* arr); // 清空数组
unsigned char array_isEmpty(my_array* arr); // 判断数组是否为空
ArrDataType array_getElem(my_array* arr, unsigned int index); // 获取某个位置的元素
unsigned char array_addElem(my_array* arr, unsigned int index, ArrDataType data); // 向某个位置添加元素
unsigned char array_delElem(my_array* arr, unsigned int index); // 删除第index个位置的元素
unsigned char array_setElem(my_array* arr, unsigned int index, ArrDataType data); // 修改某个位置的元素
unsigned int array_locateElem(my_array* arr, ArrDataType data); //查询某个元素是否在数组中


#endif